import { updateUserPasswordAPI } from '../../API/user/index.js'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    oldPassword: '',
    newPassword: '',
    confirmPassword: '',
    oldPasswordVisible: false,
    newPasswordVisible: false,
    confirmPasswordVisible: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 处理旧密码输入
   */
  onOldPasswordInput(e) {
    this.setData({
      oldPassword: e.detail.value
    });
  },

  /**
   * 处理新密码输入
   */
  onNewPasswordInput(e) {
    this.setData({
      newPassword: e.detail.value
    });
  },

  /**
   * 处理确认密码输入
   */
  onConfirmPasswordInput(e) {
    this.setData({
      confirmPassword: e.detail.value
    });
  },

  /**
   * 切换旧密码可见性
   */
  toggleOldPasswordVisibility() {
    this.setData({
      oldPasswordVisible: !this.data.oldPasswordVisible
    });
  },

  /**
   * 切换新密码可见性
   */
  toggleNewPasswordVisibility() {
    this.setData({
      newPasswordVisible: !this.data.newPasswordVisible
    });
  },

  /**
   * 切换确认密码可见性
   */
  toggleConfirmPasswordVisibility() {
    this.setData({
      confirmPasswordVisible: !this.data.confirmPasswordVisible
    });
  },

  /**
   * 确认更改密码
   */
  onConfirmChange() {
    const { oldPassword, newPassword, confirmPassword } = this.data;

    // 表单验证
    if (!oldPassword) {
      wx.showToast({
        title: '请输入旧密码',
        icon: 'none'
      });
      return;
    }

    if (!newPassword) {
      wx.showToast({
        title: '请输入新密码',
        icon: 'none'
      });
      return;
    }

    if (newPassword !== confirmPassword) {
      wx.showToast({
        title: '两次输入的新密码不一致',
        icon: 'none'
      });
      return;
    }

    // 从本地存储获取用户信息
    const userId = wx.getStorageSync('userId')
    const role = wx.getStorageSync('userId')

    if (!userId || !role) {
      wx.showToast({
        title: '用户信息缺失，请重新登录',
        icon: 'none'
      });
      return;
    }

    // 显示加载提示
    wx.showLoading({
      title: '修改中...',
    });

    // 调用修改密码的API
    updateUserPasswordAPI({
      userId,
      role,
      oldPassword,
      newPassword
    })
      .then(res => {
        wx.hideLoading();
        // 这里假设接口返回的成功状态码为0或200，具体以实际接口为准
        if (res.code === 0 || res.code === 200) {
          wx.showToast({
            title: '密码修改成功',
            icon: 'success',
            duration: 2000,
            success: () => {
              // 返回上一页
              setTimeout(() => {
                wx.navigateBack();
              }, 2000);
            }
          });
        } else {
          wx.showToast({
            title: res.message || '修改失败，请重试',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        wx.hideLoading();
        console.error('修改密码失败:', err);
        wx.showToast({
          title: '网络异常，请稍后重试',
          icon: 'none'
        });
      });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})